/* This class represents a ship's weapons
 * 
 */

package item.weapon;

import item.Item;
import item.Rarity;

import status.Status;

import java.util.ArrayList;

public class Weapon extends Item{

	
	private final Status effect; //the effect of the weapon
	private final int strength; //the strength of the weapon
	private final int duration; //the duration fo the effect 
	private final int hitRate; //the hit rate of the weapon
	private final int numShots; //the number of shots
	private final int minRange; //the minimum range of the weapon
	private final int maxRange; //the maximum range of the weapon
	private final int radius; //the radius of the weapon
	private final Target target; //what the weapon can target
	private final int aPen; //the armor penetration of the weapon 
	private final int sPen; //the shields penetration of the weapon 
	private final int ap; //the ap cost of the weapon
	private final int wepCooldown; //the cooldown of the weapon
	private final ArrayList<String> allowClass;
	private final ArrayList<String> reqAttributes;
	private final ArrayList<String> resAttributes;
	
	
	public Weapon(String n, int c, int w, String sP, Rarity r, Status eff,
			int str, int dur, int hit, int nsh, int nRan, int xRan,	int rad,
			Target tar, int ape, int spe, int a, int wepCd,
			ArrayList<String> aCl, ArrayList<String> req,
			ArrayList<String> res){
		
		super(n, c, w, sP, r);
		
		effect = eff;
		strength = str;
		duration = dur;
		hitRate = hit;
		numShots = nsh;
		minRange = nRan;
		maxRange = xRan;
		radius = rad;
		target = tar;
		aPen = ape;
		sPen = spe;
		ap = a;
		wepCooldown = wepCd;
		allowClass = aCl;
		reqAttributes = req;
		resAttributes = res;
	}
	
	
	
	//returns the effect of the weapon
	public Status getEffect() {
		
		return effect;
	}//getEffect
	
	
	//returns the strength of the weapon
	public int getStrength() {
	
		return strength;
	}//getStrength
	
	
	//returns the duration of the weapon effect
	public int getDuration() {
	
		return duration;
	}//getDuration
	
	
	//returns the hit rate of the weapon
	public int getHitRate() {
	
		return hitRate;
	}//getHitRate
	
	
	//returns the number of shots the weapon fires
	public int getNumShots() {
	
		return numShots;
	}//getNumShots
	
	
	//returns the minimum range of the weapon
	public int getMinRange() {
	
		return minRange;
	}//getRange
	
	
	//returns the maximum range of the weapon
	public int getMaxRange(){
		
		return maxRange;
	}//getMaxRange
	
	
	//returns the radius of the weapon shot
	public int getRadius() {
	
		return radius;
	}//getRadius
	
	
	//returns the type of spaces the weapon can target
	public Target getTarget() {
	
		return target;
	}//getTarget
	
	
	//returns the armor penetration
	public int getaPen() {
	
		return aPen;
	}//getaPen
	
	
	//returns the shields penetration
	public int getsPen() {
	
		return sPen;
	}//getsPen
	
	
	//returns the number of action points used
	public int getAp() {
	
		return ap;
	}//getAp
}//Weapon
